package com.hao.order.app.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.hao.order.app.model.dto.*;
import com.hao.order.app.model.entity.Order;
import com.baomidou.mybatisplus.extension.service.IService;
import com.hao.order.app.model.vo.OrderVO;

import java.text.ParseException;

/**
* @author haoge
* @description 针对表【order(订单表)】的数据库操作Service
* @createDate 2023-05-23 18:47:57
*/
public interface OrderService extends IService<Order> {

    /**
     * 用户下单
     * @param createOrderRequest
     * @return
     */
    boolean createOrder(CreateOrderRequest createOrderRequest);

    /**
     * 获取指定订单id 的总金额
     * @param orderIds
     * @return
     */
    double getCurrentAmount(String orderIds);

    /**
     * 支付
     * @param payOrderRequest
     * @return
     */
    boolean pay(PayOrderRequest payOrderRequest);

    /**
     * 根据状态查询当前用户id
     * @param queryUserOrderRequest
     * @return
     */
    Page<OrderVO> getOrderByUser(QueryUserOrderRequest queryUserOrderRequest);

    /**
     * 删除或减少订单
     * @param id
     * @param count
     * @return
     */
    boolean deleteOrder(Long id, Integer count);

    /**
     * 修改订单
     * @param updateOrderRequest
     * @return
     */
    boolean updateOrderById(UpdateOrderRequest updateOrderRequest);

    /**
     * 查询订单列表  仅管理员
     * @param listOrderRequest
     * @return
     */
    Page<Order> listOrderByPage(ListOrderRequest listOrderRequest) throws ParseException;
}
